This invention relates to firmware for a processor-based system, and more particularly, to a secure mechanism for performing firmware upgrades.
A processor-based system typically includes firmware for initializing the system. Firmware is a software program that is permanently or semi-permanently resident in the processor-based system. Usually, the software program is “burned” into a read-only memory (ROM) or a flash memory device. The ROM or flash devices may be removable integrated circuits (ICs) that plug into a dedicated chip slot in the system board.
Although the device storing the firmware may be removable and, thus, physically replaced, more typically, the device is re-programmed in place, e.g., without physical removal. ROMs may be programmable (PROMs), erasable (EPROMs), and electrically erasable (EEPROMs). Flash memory is also programmable, and may typically be programmed at a faster rate than EEPROMs.
Like other software, the firmware itself is a valuable component of the processor-based system. Firmware is the very first code executed in the system. The firmware initializes the key hardware components. Once the system is initialized, the firmware typically loads an operating system program into memory, then executes the program.
The firmware comprises part of the identity of the processor-based system. Many computer manufacturers, for example, include a proprietary firmware that includes distinct features and capabilities that may distinguish the processor-based system from those of other manufacturers.
Occasionally, an upgrade to the firmware is desired. However, because the firmware is used to power on the system, firmware upgrades typically take into account the possibility of power failure during the upgrade. For example, many systems divide the firmware up such that only portions of the firmware may be upgraded. Under such protocol, assurance is made that, despite interruption in the firmware upgrade, a minimum amount of firmware is available to power on the system.
Although the programmability of the ROM/flash devices facilitates firmware upgrade, this capability also may adversely affect the security of the processor-based system. A software program running on the processor-based system, for example, may surreptitiously unlock and reprogram a flash device on the system, thereafter changing the operation of the system, or, worse yet, rendering the system unbootable. Nevertheless, the ability to upgrade and replace the firmware, such as during repairs, is desirable.
Thus, there is a continuing need to upgrade firmware without adversely affecting the system's security.